


#if !defined( __CHARTPOINTS_H__ )
#define __CHARTPOINTS_H__



#include "wx/charttypes.h"
#include "wx/chartpointstypes.h"


class wxChartSizes;


enum wxDISPLAY_LABEL
{
    NONE,           // no label
    XVALUE,         // display x value
    YVALUE,         // display y value
    XVALUE_FLOAT,   // display x value with 1 decimal number
    YVALUE_FLOAT,   // display y value with 1 decimal number
    NAME            // display custom label
};




class WXDLLIMPEXP_CHART wxChartPoints

{

public:
	wxChartPoints(wxChartPointsTypes t) : m_Type(t) {};
	virtual ~wxChartPoints() {};




	virtual void Draw(CHART_HPAINT hp, CHART_HRECT hr) = 0;




	virtual ChartValue GetXVal(int n) const = 0;
	virtual ChartValue GetYVal(int n) const = 0;
    virtual wxString GetName(int n) const = 0;
	virtual ChartColor GetColor(int n) const = 0;




	virtual int GetCount() const = 0;
	virtual ChartValue GetMaxX() const = 0;
	virtual ChartValue GetMaxY() const = 0;
	virtual ChartValue GetMinX() const = 0;
	virtual ChartValue GetMinY() const = 0;




	virtual void SetZoom(double z) = 0;
	virtual double GetZoom() = 0;




	virtual void SetSizes(wxChartSizes* sizes) = 0;
	virtual wxChartSizes* GetSizes() const = 0;




	virtual ChartColor GetColor() const = 0;
	virtual void SetColor(ChartColor c) = 0;




    virtual wxString GetName() const = 0;
    virtual void SetName(wxString name) = 0;



    virtual void Add(wxString name, ChartValue x, ChartValue y) = 0;
    virtual void Add(wxString name, ChartValue x, ChartValue y,
				     ChartColor c) = 0;



	virtual void SetDisplayTag(wxDISPLAY_LABEL d) = 0;
	virtual wxDISPLAY_LABEL GetDisplayTag() const = 0;



	const wxChartPointsTypes GetType() const { return m_Type; }

private:



	const wxChartPointsTypes m_Type;



	wxChartPoints(const wxChartPoints&);
	wxChartPoints& operator=(const wxChartPoints&);

};




inline bool operator==(
	const wxChartPoints& c,
	const wxChartPointsTypes& t
)
{
	return ( c.GetType() == t );
}

#endif 
